Subject: Tank Tread Tutorial -- Here It Is!
From: Andrew Hofman <[email-masked]>
To: Multiple recipients of list <[email-masked]>
Date: Fri, 15 Dec 1995 15:33:31 -0500

SWELL TANK TREADS -- IMPRESS YOUR MOM
by Andrew Hofman
Animator, LumaQuest Productions

Hasn't it been driving you nuts? Tank treads are really cool. At least I
think so. But they're a big pain to do in LightWave, right? Wrong! This
tutorial explains how to create treads with a minimum of fuss and almost no
math, which is good since I am mathematically "challenged." It assumes a
reasonable working knowledge of LightWave Modeler and Layout. These treads
are not image-mapped, nor do they require lots of tedious object
choregraphy. What's more, they are not bone-dependant, although bones can be
used for aesthetic reasons if desired. The principles used here can be
applied to other open and endless-loop style objects as well.

Due to the limitations of printed text, the tread described here is cloned
from nothing more than a simple rectangular box. These tread "links" are
free-standing and not actually connected, but anyone with the skills to
complete this tutorial can easily develop more sophisticated designs. The
exact same principles apply.

Before we begin, let me explain how this method works. Since tank treads
follow a closed loop, rail cloning around a tread-shaped curve seemed a
logical place to start. The problem was, how to create a proper morph target
as well? To accomplish this, I exploited the fact that rail-cloned objects
can have the same point order, even when the source object has been moved
along the rail and re-cloned. To get proper wrapping of the links around
both curved ends of the tread, it is important to have the master link
centered precisely with respect to the curve's start point. This means
moving the start point as well as the master link before creating the morph
target. That is the key to the whole thing: Even moving the start point will
still yield a valid morph target! 

For simplicity, I chose a tread design in which links would be spaced the
same distance as they were wide (though this does not have to be the case).
By shifting all the links counter-clockwise exactly twice their own width, I
got the same effect as rotating a gear twice the angle of a single tooth. In
other words, you don't need to rotate a gear through a full 360 degrees; you
just rotate it a little and keep playing that in a seamless loop. Now let's
get down to it.

CREATING POINTS FOR THE CURVE:

1. Starting  in Layer 1, create a disc. The settings are all default, except
for the top, bottom and center: Sides = 16; Segments = 1; Top and Bottom =
0; Center = -2m on Z-axis; Radii = 500mm

2. Use Mirror to create a duplicate of this disc on the other side of the
Y-axis. These two discs will form the ends of the tread.

3. Use Box / Numeric to create a box with the following dimensions: 

X = 0, 0 
Y = -500mm, 500mm 
Z = -1m, 1m

4. Create a single point at the following location: X= 0, Y= 500mm, Z = 0.
Then create another point, identical to the first, except at Y= - 500mm.

BUILDING THE CURVE:

5. Switch to Polygon selection mode to make sure no polys are hilighted,
then switch back to Point selection Mode. 

6. We're going for a hot dog-shaped curve here. Starting with the bottom
dead center point at Z=0, select all the points one by one, in
counter-clockwise fashion. Ignore the 7 inward-facing points on each disc.

7. With all the relevant points hilighted, use Tools / Curves / Make Closed.
The resulting closed curve should look like a cross-section of a hot dog.
The top and bottom horizontal segments will not be perfectly flat, but
adequate for this tutorial. More points can be added later. (If you're using
pre-release Alpha or some other crash-prone version of Modeler, I'd suggest
saving the curve now as TreadCurve.lwo.)  

8. In Polygon selection mode, the curve should be the only thing hilighted.
Cut it and paste into Layer 2.

CREATING THE MASTER LINK:

9. Go to Layer 3. Use Box / Numeric: 
X = -500mm, 500mm 
Y = -525mm, -475 mm 
Z = -50 mm, 50 mm

This creates a box 100mm wide and 50mm tall, centered exactly on the tread
path. It is also centered exactly over the start point of the curve. This is
important! Without this, the links would not wrap correctly around the
curved ends.

9. With this box as the only active Layer, make the curve a background
Layer. Select Multiply / Rail Clone and set it for 56 Uniform Lengths,
Oriented. This creates links that are spaced the same distance as they are
wide (There will be a slight progressive error as they wrap around,
amounting to approx. 1 mm when the final one is reached. If it bothers you,
try shortening the curve later). This 100mm spacing is not the only option,
and I would encourage trying others on your own. One side benefit, it allows
pretty accurate measurement of the curve's circumference: 56 x 2 (for the
empty spaces) x 100 mm per link = 11.2 meters. This would be great for
measuring irregular curves!

10. You should now have a tread, with links wrapped smoothly around both
ends of the curve. That is, each one should be at 90 degrees with respect to
the curve's tangent at that point. If it looks good, save this object out as
Tread1a.lwo, then hit Undo. This should leave you once again with a single
tread.

CREATING THE MORPH TARGET

11. Make both the link and the curve active Layers. Draw a volume box
enclosing the link and the curve's start point, which should be right smack
in the middle of the link. Move both of them exactly 200mm on the Z-axis
(The animation will run "backwards" if you move them minus 200mm. It's your
call).

12. Repeat the Rail Clone operation of Step 9. Note how the treads still
wrap correctly around both ends. That is why you had to move the curve's
start point. Save this object out as Tread1b.lwo.

That concludes the modeling stage of this tutorial. Now enter Layout and
load both objects. 

FIRE THAT BABY UP:

13. In the Objects Panel, make Tread1b 100% dissolved. Since it is a morph
target, we do not need to see it. Its placement in the scene is not
important either, so it can be left where it is.

14. Also in the Objects Panel, make Tread1a the Current Object. Select
Tread1b as its morph target.

15. We need to create a morph envelope for Tread1a. Click on the "E"
(envelope) button next to the Metamorph Amount box. Leaving the default key
at Frame 0 alone, create a key at Frame 20. Give it a value of 100%. Also
change the End Behavior to "Repeat."

16. Exit the Envelope and Objects panels, and position your Camera for a
good view of Tread1a.

17. Make a wireframe preview, Last Frame = 20. Play this back in endless
loop mode. See the cool tread rolling away? Now go invade Poland!

EXTRA STUFF:

Treads are heavy and they usually sag on top. While the initial curve in
Modeler could be modified to include some sag, I don't recommend this. Using
1 or 2 Bones in Layout is a far more flexible approach, and is almost
enjoyably easy (for bones). Try adding a couple to Tread1a. Give them a
Limited Range of 1 and keep them in their default rotation, laying down on
their sides. With a Limited Range, they will not affect the entire object
and you won't need to mess with lock-down bones. Place them along the top of
the object and position accordingly. If your vehicle design has a lot of
idler wheels along the top, use several smaller bones pointed vertically to
create sag in between them. You could also try 3 or 4 bones along the bottom
of the treads, moving both them and the wheels to conform with bumpy terrain.

I hope you enjoyed this tutorial, and that it proves useful to you in future
animations. If you have any questions, don't be such a stranger! My email
address is below.

   ************************************************
   * Andy Hofman       |    LumaQuest Productions *            
   * [email-masked]  |             3D Animation *
   * 513-643-7333      |  Dual Raptor 3 Rendering *
   ************************************************